package br.com.vendaweb.integracao.entidade;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;


/** 
 * Bean que representa uma permissão específica do sistema. Ex: Funcionalidade.cadastrar + Modulo.Funcionario
 */
@Entity
public class Permissao implements Entidade {

	/**
	 * @uml.property  name="id"
	 */
	@Id
	@SequenceGenerator(name="sq_permissao", sequenceName="sq_permissao", initialValue=1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sq_permissao")
	private Long id;

	/**
	 * @uml.property  name="funcionalidade"
	 * @uml.associationEnd  multiplicity="(1 1)"
	 */
	@ManyToOne
	private Funcionalidade funcionalidade = new Funcionalidade();

	/**
	 * @uml.property  name="modulo"
	 * @uml.associationEnd  multiplicity="(1 1)" inverse="permissao:br.com.vendaweb.integracao.entidade.Modulo"
	 */
	@ManyToOne
	private Modulo modulo = new Modulo();

	/**
	 * Getter of the property <tt>funcionalidade</tt>
	 * @return   Returns the funcionalidade.
	 * @uml.property  name="funcionalidade"
	 */
	public Funcionalidade getFuncionalidade() {
		return funcionalidade;
	}

	/**
	 * Getter of the property <tt>id</tt>
	 * @return   Returns the id.
	 * @uml.property  name="id"
	 */
	public Long getId() {
		return id;
	}

	/**
	 * Getter of the property <tt>modulo</tt>
	 * @return   Returns the modulo.
	 * @uml.property  name="modulo"
	 */
	public Modulo getModulo() {
		return modulo;
	}

	/**
	 * Setter of the property <tt>funcionalidade</tt>
	 * @param funcionalidade   The funcionalidade to set.
	 * @uml.property  name="funcionalidade"
	 */
	public void setFuncionalidade(Funcionalidade funcionalidade) {
		this.funcionalidade = funcionalidade;
	}

	/**
	 * Setter of the property <tt>id</tt>
	 * @param id   The id to set.
	 * @uml.property  name="id"
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * Setter of the property <tt>modulo</tt>
	 * @param modulo   The modulo to set.
	 * @uml.property  name="modulo"
	 */
	public void setModulo(Modulo modulo) {
		this.modulo = modulo;
	}

}
